﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Configuration;
using ENT.GP.Core.Core;
using System.Web.UI;
using System.Web.Caching;
using System.Web;

namespace ENT.GP.Core
{
    public static class ManejadorRecursos
    {
       

        static Dictionary<string, string> manejadorRecursos(System.Web.Caching.Cache myCache)
        {
            string rutaXML = ConfigurationManager.AppSettings.Get("RUTA_RECURSOS");
            Dictionary<string, string>  Datos = new Dictionary<string, string>();
            try
            {
                Dictionary<string, string> dictionaryMenu = myCache["ReadTITLES"] as Dictionary<string, string>;
                 if (dictionaryMenu == null)
                 {

                     var xDoc = new XmlDocument();
                     xDoc.Load(rutaXML);

                     var personas = xDoc.GetElementsByTagName("recursos");

                     var lista = ((XmlElement)personas[0]).GetElementsByTagName("recurso");

                     foreach (XmlElement nodo in lista)
                     {

                         string nombre = nodo.GetAttribute("nombre");

                         string valor = nodo.GetAttribute("valor");

                         Datos.Add(nombre, valor);

                     }
                     myCache.Add("ReadTITLES", Datos, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
                 }
                 else
                 {
                     Datos = dictionaryMenu;
                 }
                
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex);
            }

            return (Datos);

        }

        public static string GetRecurso(string nombre)
        {

            Dictionary<string, string> Datos = manejadorRecursos(HttpContext.Current.Cache);
            var resultado = "";
            try
            {
                var recurso = Datos.FirstOrDefault(n => n.Key == nombre);
                resultado= recurso.Value;
            }
            catch (Exception ex)
            {
                Util.RegistarLog("No se encuentra el recurso"+Environment.NewLine+ex.ToString());
            }
            return resultado;
        }
    }
}
